package com.grid.camera.examples;

import com.grid.camera.pelco.PelcoDEnhancedClient;

/**
 * Pelco D增强客户端基本示例类 演示如何使用PelcoDEnhancedClient的基本功能
 *
 * <p>此示例展示了如何使用PelcoDEnhancedClient的基本功能，包括：
 *
 * <ul>
 *   <li>创建增强版客户端并连接到摄像机
 *   <li>执行基本的云台控制命令（上移、下移、停止）
 *   <li>使用自定义验证器验证响应
 *   <li>设置和调用预置位
 *   <li>使用try-with-resources自动关闭资源
 * </ul>
 *
 * <p>PelcoDEnhancedClient相比基本的PelcoDTcpClient，增加了以下功能：
 *
 * <ul>
 *   <li>重试机制：自动重试失败的操作
 *   <li>响应验证：使用自定义验证器验证响应是否有效
 *   <li>异步操作：支持CompletableFuture的异步API
 *   <li>超时控制：可配置的连接超时和操作超时
 *   <li>资源管理：实现AutoCloseable接口，支持try-with-resources语法
 * </ul>
 *
 * <p>运行此示例前，请确保：
 *
 * <ol>
 *   <li>已正确配置摄像机的IP地址和端口
 *   <li>摄像机支持Pelco D协议
 *   <li>网络连接正常
 * </ol>
 *
 * @author Grid Team
 * @version 1.0.0
 * @since 1.0.0
 * @see com.grid.camera.pelco.PelcoDEnhancedClient
 * @see com.grid.camera.pelco.PelcoDProtocol
 */
public class PelcoDEnhancedExample {

    public static void main(String[] args) {
        // 创建增强版客户端，地址为1
        try (PelcoDEnhancedClient client = new PelcoDEnhancedClient("192.168.15.184", 4196, 1)) {
            // 连接到摄像机
            client.connect();
            System.out.println("已连接到摄像机");

            // 使用基本命令
            client.moveUp();
            client.moveUpStop();
            client.moveDown();
            client.moveDownStop();

            client.stopMovement();

            client.setPreset(1);
            client.gotoPreset(1);
            //
            client.readPreset(1);
            client.readHardwareVersion();
            client.readSoftwareVersion();
            client.readStatus();

            client.setMaxPosition();
            client.setVerticalSpeed(1);

        } catch (Exception e) {
            System.err.println("发生错误: " + e.getMessage());
            e.printStackTrace();
        }

        System.out.println("示例执行完成，资源已自动关闭");
    }
}
